package com.phoenix.jsef.framework.annotations;

import java.lang.annotation.*;

/**
 * 这个注解作为商业实体类Entity的属性，记录了java商业实体和数据库表之间的关系
 * @author 李启联
 *
 */
@Documented
@Target({ElementType.TYPE}) 
@Retention(RetentionPolicy.RUNTIME)
public @interface EntityAttribute {

	/**
	 * 查询的表名
	 * @return 查询的表名
	 */
	public String selectTable() default "";
	
	/**
	 * 更新、删除的表名
	 * @return 更新、删除的表名
	 */
	public String updateTable() default "";

	
	/**
	 * 主键字段的名称。
	 * [可以为数据库对应的字段名称(JOB_ORDER_ID)，也可以为对应模型定义的属性名称(jobOrderId) 可以忽略大小写]
	 * @return 主键字段的名称。
	 */
	public String identityProperty() default "";

    /**
     * 主键字段的生成策略
     * @return
     */
	public IdType identityGenerateType() default IdType.NONE;
	
	/**
	 * 级联删除实体对象
	 * @return 实体对象类集合
	 */
	public Class[] cascadeDeleteEntitys() default{};
	
	/**
	 * 级联更新实体对象
	 * @return 实体对象类集合
	 */
	public Class[] cascadeUpdateEntitys() default{};
	
	/**
	 * 新增时是否返回实体对象的自增id
	 * @return 自增id
	 */
	public boolean useGeneratedKeys() default false;
}
